﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Ink;

namespace RozpoznawanieCore.KsztaltyFolder
{
    class KreskaProsta : Kreska
    {
        public const int POZIOMA = 11;
        public const int PIONOWA = 10;
        public KreskaProsta(Stroke s, int orient)
        {
            orientacja = orient;
            if (orientacja == POZIOMA)
            {
                Console.WriteLine("pozioma");
                x1 = (int)Math.Min(s.StylusPoints[0].X, s.StylusPoints[s.StylusPoints.Count - 1].X);
                x2 = (int)Math.Max(s.StylusPoints[0].X, s.StylusPoints[s.StylusPoints.Count - 1].X);
                y1 = (int)s.StylusPoints[0].Y;
                y2 = (int)s.StylusPoints[0].Y;
            }

            if (orientacja == PIONOWA)
            {
                Console.WriteLine("pionowa");
                y1 = (int)Math.Min(s.StylusPoints[0].Y, s.StylusPoints[s.StylusPoints.Count - 1].Y);
                y2 = (int)Math.Max(s.StylusPoints[0].Y, s.StylusPoints[s.StylusPoints.Count - 1].Y);
                x1 = (int)s.StylusPoints[0].X;
                x2 = (int)s.StylusPoints[0].X;
            }
        }

    public Ksztalt zrobKat(KreskaProsta kp)
    {
        if (orientacja == kp.orientacja) return null;

        if (orientacja == POZIOMA)
        {
            double dl =( Dlugosc+kp.Dlugosc)/2;
            if (Ksztalt.czyDwaPunktyBliskoSiebie(x1, y1, kp.x2, kp.y2,dl))
            {
                return new Kat(kp.x1, kp.y1, x2, y2, Kat.LEWY_DOLNY,this,kp);
            }

            if (Ksztalt.czyDwaPunktyBliskoSiebie(x1, y1, kp.x1, kp.y1,dl))
            {
                return new Kat(kp.x2, kp.y2, x2, y2, Kat.LEWY_GORNY, this, kp);
            }

            if (Ksztalt.czyDwaPunktyBliskoSiebie(x2, y2, kp.x1, kp.y1,dl))
            {
                return new Kat(kp.x2, kp.y2, x1, y1, Kat.PRAWY_GORNY, this, kp);
            }

            if (Ksztalt.czyDwaPunktyBliskoSiebie(x2, y2, kp.x2, kp.y2,dl))
            {
                return new Kat(kp.x1, kp.y1, x1, y1, Kat.PRAWY_DOLNY, this, kp);
            }

        }
        return null;
    }

    public Ksztalt zrobPlus(KreskaProsta kp)
    {
        if (orientacja == kp.orientacja) return null;
        if (orientacja == PIONOWA) return null;
        int dlugosc1 = x2 - x1;
        int dlugosc2 = kp.y2 - kp.y1;
        if (kp.x1 > x1 + dlugosc1 * 0.2 && kp.x1 < x2 - dlugosc1 * 0.2


            )
        {
            strokeCol.Add(kp.strokeCol);
            Plus p = new Plus(x1, x2, kp.y1, kp.y2, strokeCol);
            return p;
        }
        return null;

    }

    }


}
